package com.blq.common.core.domain.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.blq.common.core.domain.TreeEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 部门表 sys_dept
 *
 * @author Blq
 */

@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sys_dept")
@ApiModel("部门业务对象")
public class SysDept extends TreeEntity<SysDept> {
    private static final long serialVersionUID = 1L;

    /**
     * 机构类别（1.平台 2.分公司 3.服务商 4.供电所, 5.运维小队
     */
    @ApiModelProperty(value = "机构类别")
    private Long typeId;

    /**
     * 部门类型（1.部门 2.公司、分公司）
     */
    @ApiModelProperty(value = "部门类型")
    private Long deptType;

    /**
     * 部门ID
     */
    @ApiModelProperty(value = "部门id")
    @TableId(value = "dept_id")
    private Long deptId;

    /**
     * 祖级列表
     */
    @ApiModelProperty(value = "祖级列表")
    private String ancestors;

    /**
     * 部门名称
     */
    @ApiModelProperty(value = "部门名称")
    @NotBlank(message = "部门名称不能为空")
    @Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
    private String deptName;


    /**
     * 图片
     */
    @ApiModelProperty(value = "图片")
    private String deptImage;


    /**
     * 地址
     */
    @ApiModelProperty(value = "地址")
    private String address;

    /**
     * 服务类型
     */
    @ApiModelProperty(value = "服务类型")
    private String serviceType;

    /**
     * 显示顺序
     */
    @ApiModelProperty(value = "显示顺序")
    @NotNull(message = "显示顺序不能为空")
    private Integer orderNum;



    /**dept_image
     * 负责人
     */
    @ApiModelProperty(value = "负责人")
    private String leader;

    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    @Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符")
    private String phone;

    /**
     * 邮箱
     */
    @ApiModelProperty(value = "邮箱")
    @Email(message = "邮箱格式不正确")
    @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
    private String email;

    /**
     * 部门状态:0正常,1停用
     */
    @ApiModelProperty(value = "部门状态:0正常,1停用")
    private String status;

    /**
     * 删除标志（0代表存在 2代表删除）
     */
    @ApiModelProperty(value = "删除标志（0代表存在 2代表删除）")
    @TableLogic
    private String delFlag;

    /**
     * 创建者
     */
    @ApiModelProperty(value = "创建者")
    private String create_by;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    private Date create_time;

    /**
     * 更新者
     */
    @ApiModelProperty(value = "更新者")
    private String update_by;

    /**
     * 更新时间
     */
    @ApiModelProperty(value = "更新时间")
    private Date update_time;

    /**
     * 省
     */
    @ApiModelProperty(value = "省")
    private String province;

    /**
     * 州市
     */
    @ApiModelProperty(value = "州市")
    private String city;

    /**
     * 区县
     */
    @ApiModelProperty(value = "区县")
    private String area;

    /**
     * 经度
     */
    @ApiModelProperty(value = "经度")
    private String lon;

    /**
     * 纬度
     */
    @ApiModelProperty(value = "纬度")
    private String lat;

    /**
     * 默认接单
     */
    @ApiModelProperty(value = "默认接单")
    private Integer receiver;

    /**
     * 师傅分账比例
     */
    @ApiModelProperty(value = "师傅分账比例")
    private String workerRatio;

    /**
     * 钱包金额
     */
    @ApiModelProperty(value = "钱包金额")
    private BigDecimal money;

    /**
     * 订单打款方式（0钱包 1微信 2支付宝 3银行卡）
     */
    @ApiModelProperty(value = "订单打款方式")
    private Integer checkType;

    /**
     * 订单分账比例
     */
    @ApiModelProperty(value = "订单分账比例")
    private String orderRatio;

    /**
     * 订单分账方案（0平台 1公司）
     */
    @ApiModelProperty(value = "订单分账方案")
    private Integer orderRatioType;

    /**
     * 部门信息对象
     */
    @ApiModelProperty(value = "部门信息对象")
    @TableField(exist = false)
    private SysDeptInfo deptInfo;

}
